<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.4&key=6e06828a4be0c2583eb1137da0805e2c"></script>
    <script type="text/javascript" src="../js/online/constant.js"></script>
   	<script type="text/javascript" src="../js/mycommon.jquery.js"></script>
	<script type="text/javascript" src='../plugins/jquery-x.x.js'> </script>	
    <style type="text/css">
      body,html,#container{
        height: 100%;
        margin: 0px;
      }
    </style>
    <title>简约地图</title>
  </head>
  <body>
  	<input type="text" class="form-control" id="searchplace" placeholder="搜索位置" style="height: 30px;width: 99%; display:none"/>
    <div id="container" tabindex="0"></div>
    <script type="text/javascript">
	    $('#searchplace').unbind('keydown').unbind('keypress').bind('keydown',function(event){
		    if(event.keyCode == "13") {
		    	var placeName = $('#searchplace').val().trim();
		    	if(placeName && placeName != ''){
		    		$(this).blur();
		    		searchPlace(placeName, '全国');
		    	}else {
		    	}
		    }
		});
	
    	var geocoder;
    	var lnglat;
    	var address;
    	var map = new AMap.Map('container',{
            resizeEnable: true,
            zoom: 10,
            center: [116.480983, 40.0958]
        });
	        
    	var lng = getQueryString("lng");
    	var lat = getQueryString("lat");
    	if (lng && lat) {
			lnglat = new AMap.LngLat(lng, lat);
			initGeocoder();
			setTimeout('map.setZoom(18)', 1000);
		} else {//定位到本地
			setLocation();
			initPlaceSearchAndAutocomplete();
		}
        // 为地图注册click事件获取鼠标点击的经纬度坐标
		var clickEventListener = map.on('click', function(e) {
			// removeMarker();
			lnglat = new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat());
			// setMarker(lnglat);
			setAddr();
		});
		
		function setLocation() {
	        //地图定位插件
	        map.plugin('AMap.Geolocation', function() {
				geolocation = new AMap.Geolocation({
					enableHighAccuracy : true, // 是否使用高精度定位，默认:true
					timeout : 10000, // 超过10秒后停止定位，默认：无穷大
					maximumAge : 0, // 定位结果缓存0毫秒，默认：0
					convert : true, // 自动偏移坐标，偏移后的坐标为高德坐标，默认：true
					showButton : true, // 显示定位按钮，默认：true
					buttonPosition : 'LB', // 定位按钮停靠位置，默认：'LB'，左下角
					buttonOffset : new AMap.Pixel(10, 20), // 定位按钮与设置的停靠位置的偏移量，默认：Pixel(10,
					// 20)
					showMarker : true, // 定位成功后在定位到的位置显示点标记，默认：true
					showCircle : true, // 定位成功后用圆圈表示定位精度范围，默认：true
					panToLocation : true, // 定位成功后将定位到的位置作为地图中心点，默认：true
					zoomToAccuracy : true
				// 定位成功后调整地图视野范围使定位位置及精度范围视野内可见，默认：false
				});
				map.addControl(geolocation);
				geolocation.getCurrentPosition();
				AMap.event.addListener(geolocation, 'complete', onLocateComplete); // 返回定位信息
				AMap.event.addListener(geolocation, 'error', onLocateError); // 返回定位出错信息
			});
		}
		
		
		/**
		 * 定位成功处理函数
		 * 
		 * @param GeolocationResult
		 * @returns
		 */
		function onLocateComplete(GeolocationResult) {
			lnglat = new AMap.LngLat(GeolocationResult.position.lng, GeolocationResult.position.lat);
			initGeocoder();
		}
		
		function onLocateError(GeolocationError) {
			setTimeout('map.setZoom(18)', 2000);
			lnglat = new AMap.LngLat(113.389591, 23.125478);
			map.setCenter(lnglat);
			initGeocoder();
		}
		
		/**
		 * 
		 * @returns
		 */
		function initGeocoder() {
			// 初始化地址信息变量
			AMap.service('AMap.Geocoder', function() { // 回调函数
				// 实例化Geocoder
				geocoder = new AMap.Geocoder({
					city : "010" // 城市，默认：“全国”
				});
				setAddr();
			});
		}
		
		/**
		 * 地理编码
		 * 
		 * @returns
		 */
		function setAddr() {
			geocoder.getAddress(lnglat, function(status, result) {
				if (status === 'complete' && result.info === 'OK') {
					address = result.regeocode.formattedAddress;
				} else {
				}
				map.setCenter(lnglat);
				showMessageInMap(address);
			});
		}
		
		/**
		 * 打开信息窗体
		 * 
		 * @returns
		 */
		function showMessageInMap(message) {
			// 构建信息窗体中显示的内容
			var info = [];
			/*
			 * info.push("<div><b>高德软件有限公司</b>"); info.push("电话 : 010-84107000");
			 */
			info.push(message + "<a href='javascript:sendMap()'>发送地址</a></div>");
		
			var infoWindow = new AMap.InfoWindow({
				content : info.join("<br/>")
			// 使用默认信息窗体框样式，显示信息内容
			});
			infoWindow.open(map, lnglat);
		}
		
		function sendMap(){
			//alert(address + "--" + lnglat.lng + "--" + lnglat.lat);
			var message = {
				address : address,
				lng : lnglat.lng,
				lat : lnglat.lat,
			};
			parent.doSend(JSON.stringify(message), "", MULIT_TYPE.MAP);
			parent.layer.closeAll();
		}
		
		var autocomplete;
		var placeSearch;
		/**
		 * 初始化poi服务和输入提示
		 * 
		 * @returns
		 */
		function initPlaceSearchAndAutocomplete() {
			$("#searchplace").show();
			AMap.plugin(['AMap.Autocomplete', 'AMap.PlaceSearch'], function() {// 回调函数
				var autoOptions = {
					// city: "北京", //城市，默认全国
					// type: "",
					input : "searchplace"// 使用联想输入的input的id
				};
				autocomplete = new AMap.Autocomplete(autoOptions);
				placeSearch = new AMap.PlaceSearch({
					pageSize: 15,
					pageIndex: 1,
					type: '汽车服务|汽车销售|汽车维修|摩托车服务|餐饮服务|购物服务|生活服务|体育休闲服务'
						+ '|医疗保健服务|住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务'
						+ '|交通设施服务|金融保险服务|公司企业|道路附属设施|地名地址信息|公共设施',
					map : map,
					//panel: "searchResult"
				});
				//监听用户选择的位置
				AMap.event.addListener(placeSearch, "selectChanged", function(e){
					lnglat = new AMap.LngLat(e.selected.data.location.lng, e.selected.data.location.lat);
					geocoder.getAddress(lnglat, function(status, result) {
						if (status === 'complete' && result.info === 'OK') {
							addr = result.regeocode.formattedAddress;
						} else {
						}
					});
				});
				AMap.event.addListener(autocomplete, "select", function(e) {
					//调用search方法后，添加到dom文档的div的class="amap_lib_placeSearch_poi"
					searchPlace(e.poi.name, e.poi.adcode);
				});
			});
		}
		
		/**
		 * 按关键词搜索位置
		 * @param placeName 搜索词
		 * @param placeCode 城市名（中文或中文全拼）、citycode、adcode
		 * @returns
		 */
		function searchPlace(placeName, placeCode){
			placeSearch.setCity(placeCode);
			placeSearch.search(placeName, function(status, result) { 
				searchResult = result.poiList.pois;
				var div = $(".amap_lib_placeSearch_poi");
			});
		}
    </script>
  </body>
</html>